import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
 * Clase que permite mostrar el banco graficamente
 * @author Diego Enriquez 10038
 */
public class BancoGrafico extends JPanel{
	private JButton iniciar;
	private JLabel tTotal;
	private JLabel tPromedio;
	private JLabel inst;
	private Banco banco;
	private Cliente[] clientes;
	
	/**
	 * Crea un nuevo banco
	 */
	public BancoGrafico(){
// Modificar esto para determinar los clientes 
		clientes = new Cliente[8]; // Cambiar esto para modificar la cantidad de clientes
		// Siempre colocar la cantidad de clientes indicada arriba
		clientes[0] = new Cliente(0, 5);
		clientes[1] = new Cliente(2, 10);
		clientes[2] = new Cliente(3, 15);
		clientes[3] = new Cliente(1, 8);
		clientes[4] = new Cliente(9, 9);
		clientes[5] = new Cliente(20, 18);
		clientes[6] = new Cliente(8, 3);
		clientes[7] = new Cliente(9, 30);

		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		banco = new Banco();
		iniciar = new JButton("iniciar");
		iniciar.addActionListener(new iniciarListener());
		tTotal = new JLabel("Tiempo total: NO SE A ABIERTO EL BANCO XD");
		tPromedio = new JLabel("Tiempo promedio: NO SE A ABIERTO EL BANCO XD");
		inst = new JLabel("La lista de clientes se encuentra en el constructor de la clase Banco Grafico");
		revalidar();
	}
	
	/**
	 * Borra y agrega todo de nuevo
	 */
	private void revalidar(){
		JPanel panel = new JPanel();
		JPanel panel1 = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		removeAll();
		panel.add(inst);
		panel1.add(tTotal);
		panel2.add(tPromedio);
		panel3.add(iniciar);
		add(panel);
		add(panel1);
		add(panel2);
		add(panel3);
		revalidate();
	}
	
	/**
	 * Clase que permite realizar las acciones necesarias al precionar el boton de inicio
	 * @author Diego Enriquez 10038
	 */
	private class iniciarListener implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			banco.abrir(clientes);
			tTotal.setText("Tiempo total: "+banco.getTActual());
			tPromedio.setText("Tiempo promedio: "+ banco.promedio());
		}
		
	}
}
